package com.bsoft.gol.hbs.service;

import com.bsoft.gol.hbs.bean.Vo.ModuleConfigVo;
import com.bsoft.gol.hbs.bean.request.BasePropertyConfigRequest;
import com.bsoft.gol.hbs.bean.request.QueryPropertyConfigRequest;
import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import hcn.base.BasePropertyConfig;
import hcn.base.Service;

import java.util.List;

public interface BasePropertyConfigService {

    @RpcService
    List<ModuleConfigVo> queryModuleMenuList() throws ControllerException;

    @RpcService
    List<BasePropertyConfig> queryAllPropertyConfig(String objectId, String moduleId, String propertyCode) throws ControllerException;

    @RpcService
    List<BasePropertyConfig> querySystemPropertyConfigList(BasePropertyConfigRequest request) throws ControllerException;

    @RpcService
    List<BasePropertyConfig> queryAllPropertyConfigByFuzzy(QueryPropertyConfigRequest request) throws ControllerException;

    @RpcService
    void saveBasePropertyConfig(BasePropertyConfig basePropertyConfig) throws Exception;

    @RpcService
    void saveInitBasePropertyConfig(BasePropertyConfig basePropertyConfig, Service service, String propertyValue,
                                    String propertyKey, String svrOpenKey, String propertyLevel, Integer propertyId,
                                    String objectName, String objectId, String serviceOpenId);
    @RpcService
    void initBasePropertyConfig(String orgId) throws ControllerException;
    /**
     * 更新初始化系统参数
     * @param propertyCode
     * @param orgId
     * @param propertyValue
     * @throws ControllerException
     */
    @RpcService
    void updateBasePropertyConfig(String propertyCode, String orgId,String propertyValue);
    @RpcService
    BasePropertyConfig getBasePropertyConfig(String propertyCode, String orgId) throws ControllerException;

    @RpcService
    BasePropertyConfig getPropertyConfigByPropertyCode(String propertyCode, String objectId);

    @RpcService
    List<BasePropertyConfig> queryPropertyConfigList(String objectId, List<String> propertyCodes) throws ControllerException;

    @RpcService
    List<BasePropertyConfig> queryPropertyConfigListWithoutToken(String tenantId, String objectId, List<String> propertyCodes) throws ControllerException;

    @RpcService
    List<BasePropertyConfig> queryPropertyConfigByModuleId(String objectId,String moduleId) throws Exception;
}
